﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Torneo.Entidades;

namespace Torneo.BusinessLogic
{
    public class JugadorBLL
    {
        public void AgregarJugador(Jugador jugador)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            unityOfWork.JugadorRepository.AgregarJugador(jugador);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public void EliminarJugador(Jugador jugador)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var juga = unityOfWork.JugadorRepository.ObtenerJugadorPorId(jugador.JugadorId);
            unityOfWork.JugadorRepository.EliminarJugador(juga);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public List<Jugador> ObtenerJugadores()
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var jugadores = unityOfWork.JugadorRepository.ObtenerTodos();
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
            return jugadores.ToList();
        }

        public void ModificarJugador(Jugador jugador)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            unityOfWork.JugadorRepository.ModificarJugador(jugador);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public Jugador ObtenerJugadorPorId(int id)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var jugador = unityOfWork.JugadorRepository.ObtenerJugadorPorId(id);            
            unityOfWork.Dispose();
            return jugador;
        }

        public List<Jugador> ObtenerJugadoresSinEmparejamiento()
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var jugadores = unityOfWork.JugadorRepository.ObtenerJugadoresSinEmparejamiento();
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
            return jugadores.ToList();
        }
    }
}
